草庐IT

pointers - 结构成员的 Golang func 指针

全部标签

pointers - 当我将变量传递给 golang 中的私有(private)方法时,它会创建一个新实例吗?

如果我有主要功能:vara="foo"modify(a)fmt.Println(a)在哪里funcmodify(sstring)error{s="bar"}结果是"foo"还是"bar"? 最佳答案 没有。它不会编译,因为'foo'和'bar'都不是单个字符。但是假设您改用双引号。在Golang中,参数是按值传递的(它们被复制到内存中的新位置-堆栈或堆),无论是私有(private)方法还是公共(public)方法或任意函数都无关紧要。新实例已修改。您的示例的结果将是"foo"。为了修改位于函数外部的变量,您必须显式传递指向此类变量

go - 基于结构字段返回 slice 最小值的函数?

我有一个Go结构,例如:typepatientstruct{patientIDintageintbodyTempintnumberVaccinesintrecordIDint}如何编写一个函数,通过选择我感兴趣的字段返回patientslice中的最小值?我会这样调用它:someSlice:=[]patient{patient{...},...,...}fmt.Printf("Patientlowesttemp:%v",someSlice.GetMin(bodyTemp)谢谢! 最佳答案 因为已经写在评论中,你可以使用反射来完成,但

Golang 导入结构并共享所有应用程序

我想导入包并在main()函数中创建新结构。//main.goimport"testapp/app"a:=app.GetApp()db,err:=a.ConnectDatabase()iferr!=nil{panic(err.Error())}//testapp/app.gofunc(a*App)ConnectDatabase(){db,err:=sql.Open()iferr!=nil{panic(err.Error())}a.db=db}我有错误:app.ConnectDatabase()usedasvalue我该如何解决? 最佳答案

go - 如何在func中修改全局结构值

当我使用它在结构上迭代时,内存地址是不同的。所以我不能修改它的值没有人typeSiteUrlstruct{namestringurlstringisUpbool}funcdebug(s*SiteUrl){s.isUp=false}funcmain(){sites:=[]SiteUrl{{"testsite","http://127.0.0.1:8000",true},}for{for_,site:=rangesites{fmt.Println(&site.isUp,site.isUp)debug(&site)}}}它的值没有修改 最佳答案

pointers - 为什么解码到指针变量是不可能的?

我在包级别使用指针变量:varconfig*configuration但尝试解码到变量中会导致此错误:json:Unmarshal(nil*main.configuration)。但是,解码为指向指针变量的指针是成功的。这是什么原因? 最佳答案 Whyisunmarshalingintoapointervariablenotpossible?这是可能的。事实上,这是必需的。解码为非指针是不可能的。json:Unmarshal(nil*main.configuration)这个错误并不是说你不能解码到一个指针,而是说你不能解码到一个n

go - 为什么我在其他函数中设置值的结构中的字段始终为零?

这个问题在这里已经有了答案:Usingasetterforastructtypedoesnotworkasanticipated(2个回答)PropertyinGolangstructnotgettingmodified(2个回答)Structvariablenotbeingupdated(1个回答)2年前关闭。我在其他方法中为结构设置字段值。我断点,session有一个值,但是当getSession时返回,session为零。我感觉很失落。像代码一样,newMongoUtil创建MongoUtil,以及mu.getSession给MongoUtil.session如果是nil,则为一

go - 如果不能给函数指针赋值,Go 中的函数指针有什么用?

你能用*func()在Go中做任何事情吗?varffunc()=foo//worksvarg*func()//worksg=foo//fails`cannotusefoo(typefunc())astype*func()inassignment`asexpectedg=&foo//failstoo`cannottaketheaddressoffoo` 最佳答案 你不能获取函数定义的地址,你可以获取函数值的地址。这有效:g:=&fPlayground示例:https://play.golang.org/p/BokYCrVmV_p

go - 是否可以更改存储在空接口(interface)中的结构的成员

我有这个:typepairstruct{a,bint}然后我定义了两个变量:x:=pair{3,4}varyinterface{}=x我意识到y不存储x的引用,而是通过以下代码存储它的副本:x.b=7fmt.Println(x)fmt.Println(y)//got://{37}//{34}另见:https://github.com/golang/go/blob/master/src/runtime/iface.go#L359有什么方法可以修改y中复制的结构的pair.y成员吗?试过这个:(失败)//cannotassigntoy.(pair).by.(pair).b=7试过这个:(也

arrays - 如何使用 Golang 将数据放入结构中?

这是我的代码:packagemainimport"fmt"typeSpeciesstruct{Human[]InfoAnimal[]Info}typeInfostruct{NamestringNumberstring}funcmain(){vardataSpeciesdata=????fmt.Println(data)}我想把它看成这样的json:{"human":[{"name":"dave","number":"00001"},{"name":"jack","number":"00002"},{"name":"nate","number":"00003"}],"animal":[{

pointers - 从非 chan 类型接收 *bool

我想守护我的应用程序,但我有一个大问题。我使用的channel是chanstruct{}类型。但是,对于包getopt(标志包),我的标志是*bool类型,所以我不知道如何修改我的应用程序。bool类型的channel还不够。我确定有一个我不明白的概念。我附上代码:packagemainimport("os""syscall""time""github.com/pborman/getopt/v2""github.com/sevlyar/go-daemon")var(done=make(chanstruct{})optQuit=make(chanstruct{})optRun=make(